home *** CD-ROM | disk | FTP | other *** search
-
- o Only a single copy of the master sources exist. This
- copy is called the source ``repository'' and, through
- administrative actions, contains all the information to
- extract previous software releases at any time based on
- either a symbolic revision tag, or a date in the past.
-
- o Individual software developers check out private copies
- of the sources into their personal work space. These
- private sources can be edited at any time and checked
- back into the source repository as a permanent change.
- cvs takes special care to ensure that a file is up-to-
- date with the current revision in the source repository
- before allowing it to be added as a permanent change.
-
- o There is a facility for software developers to bring
- their private copies of the sources up-to-date with the
- currently checked in revisions, while at the same time
- preserving any modifications that have been made to
- their private sources. This allows multiple developers
- to be concurrently working on the same source files
- without regard for what the other guy is doing.
-
- Note that this is the biggest change from the way most
- other revision control systems, like RCS or SCCS work,
- which allow only one developer to ever be changing a
- file, since the file must be checked out as ``locked''
- for the exclusive use of that person. cvs instead
- never applies an RCS lock to a checked out file until
- the moment before it is to be checked back in as a per-
- manent change. Concurrency checks are performed on the
- soon-to-be checked in file and the file must be up-to-
- date before it can be made permanent. In this way, cvs
- allows individuals the freedom to change any file at
- will, and provides the tools necessary to point out, if
- not resolve, any conflicts that may be generated by
- allowing this extra, and necessary, freedom.
-
- o cvs has direct support for tracking source releases
- from third-party vendors. The checkin(l) program is
- used to initially setup the source repository. The
- branch support of RCS is used to build the vendor
- release as a branch off the main (local) RCS trunk.
- Once this is done, developers can check out files and
- make local changes to the vendor's source distribution.
- The act of checking in a local change to a vendor's
- source distribution moves the RCS branch from tracking
- the third-party vendor's release to the main (local)
- RCS trunk so that the local version of the file is used
- forever more.
-
- When a new version of the vendor's source distribution
- (or even a minor version consisting of a small subset
- of files) arrives, the checkin program is used again to
- add the new vendor release to the already existing
- source repository. For files that have not been
- changed locally, the new file from the vendor becomes
- the current revision. For files that have been modi-
- fied locally, checkin warns that the file must be
- merged manually with the new vendor release. The join
- command of cvs is a useful tool that aids this manual
- merge process (see below).
-
- o A vendor release or a local release can be given a sym-
- bolic tag name that is stored directly in the RCS
- files. This tag can be used at any time in the future
- to get an exact copy of any previous release. With
- equal ease, one can also extract an exact copy of the
- source files as of any arbitrary date in the past as
- well.
-
- o All changes that are made to the source repository are
- carefully logged in a file, notesfile, or news data-
- base, which can be used to produce release notices.
- cvs can be configured to send log updates through one
- or more filter programs, based on a regular expression
- match on the directory that is being changed. This
- allows multiple related or unrelated projects to exist
- within a single cvs source repository tree, with each
- different project sending their checkin reports to a
- unique log device for the project.
-
- o There is support for a simple, yet powerful, ``module''
- database. This database can be used to apply names to
- collections of directories and files as a matter of
- convenience when checking out smaller pieces of a
- larger software distribution. This allows one to
- checkout the ``diff'' program, for example, without
- ever requiring the knowledge that the sources to
- ``diff'' actually reside in the ``bin/diff'' directory.
-
- The module database also has limited support for an
- aliasing capability. This is useful for programs that
- share sources from completely disjoint directories.
- The aliasing feature can also be used to limit a named
- release to a certain collection of directories and
- files, to only work with pieces of the source found in
- the entire source repository.
-
- o There is direct support for determining which files
- have changed since a previous release, or from a par-
- ticular date. As well, cvs can create a patch(l) for-
- mat output file which can be used to bring a previously
- released software distribution current with the newest
- release. One can create a patch file between two
- tagged revisions, between a revision and some date in
- the past, between two dates, or between a date or revi-
- sion and the current ``head'' revision.
-